// require 是 Node.js 环境中的全局变量，用来导入模块
const fs = require('fs')

// flag标记
//   r   read  只读
//   w   write 可写
//   a   append  追加

// // 将 『云牧』 写入到当前文件夹下的『座右铭.txt』文件中
// fs.writeFile('./index.txt', '云牧', { flag: 'a' }, err => {
// 	if (err) {
// 		// 如果写入失败，则回调函数调用时，会传入错误对象，如写入成功，会传入 null
// 		throw err
// 	}
// 	console.log('写入成功')
// })

// try {
// 	fs.writeFileSync('date.js', JSON.stringify(Date.now()))
// } catch (err) {
// 	throw err
// }

// fs.appendFile('./index.txt', '云牧', err => {
// 	if (err) {
// 		throw err
// 	}
// 	console.log('追加成功')
// })

// fs.appendFileSync('./index.txt', '云牧')

// 创建一个可写流
// const ws = fs.createWriteStream('index.html')

// ws.write('<html>')
// ws.write(`
//   <head> </head>
//   <body>
//     <h1>云牧</h1>
//   </body>
// `)

// ws.write('</html>')
// ws.end()

// fs.readFile('./index.html', (err, data) => {
// 	if (err) {
// 		throw err
// 	}

// 	console.log(data.toString())
// })

// fs.readFile('./index.html', 'utf-8', (err, data) => {
// 	if (err) {
// 		throw err
// 	}

// 	console.log(data.toString())
// })

// const data = fs.readFileSync('./index.html')

// console.log(data.toString())

// 流式读取
// const rs = fs.createReadStream('./index.html')

// let fileData = ''

// // 监听可读流的 data 事件，每次取出 64kb 数据会再次触发 data 事件
// rs.on('data', chunk => {
// 	console.log(`读取到 ${chunk.length} 字节的数据`)
// 	// 将数据块转换为字符串并拼接到文件内容中
// 	fileData += chunk.toString()
// })

// // 监听可读流的 end 事件
// rs.on('end', () => {
// 	console.log(`读取完成，文件内容：${fileData}`)
// })

// // 监听可读流的 error 事件
// rs.on('error', err => {
// 	throw err
// })

// 创建一个可写流
// const ws = fs.createWriteStream('output.txt')

// // 写入数据到可写流
// ws.write('Hello', 'utf8')
// ws.write('云牧', 'utf8')

// // 结束可写流
// ws.end()

// // 监听可写流的 finish 事件
// ws.on('finish', () => {
// 	console.log('文件写入完成')
// })

// // 监听可写流的 error 事件
// ws.on('error', err => {
// 	console.error(`发生错误: ${err.message}`)
// })

// // 创建一个可读流
// const rs = fs.createReadStream('input.txt')
// // 创建一个可写流
// const ws = fs.createWriteStream('output.txt')
// // 监听可读流的 data 事件
// rs.on('data', chunk => {
// 	console.log(`读取到 ${chunk.length} 字节的数据`)
// 	ws.write(chunk) // 将数据块写入可写流中
// })
// // 监听可读流的 end 事件
// rs.on('end', () => {
// 	console.log('文件读取完成')
// 	ws.end() // 结束可写流
// })
// // 监听可读流的 error 事件
// rs.on('error', err => {
// 	console.log(err)
// })
// // 监听可写流的 finish 事件
// ws.on('finish', () => {
// 	console.log('文件写入完成')
// })
// // 监听可写流的 error 事件
// ws.on('error', err => {
// 	console.error(`发生错误: ${err.message}`)
// })

// fs.unlink('./output.txt', err => {
// 	if (err) {
// 		throw err
// 	}

// 	console.log('删除成功')
// })

// fs.unlinkSync('./input.txt')

// fs.rename('./index.txt', './txtProject/demo.txt', err => {
// 	if (err) {
// 		throw err
// 	}

// 	console.log('重命名移动成功')
// })

// fs.renameSync('./index.txt', './txtProject/demo.txt')

// fs.mkdir('./html', err => {
// 	if (err) {
// 		throw err
// 	}
// 	console.log('创建成功')
// })

// fs.readdir('./Javascript', (err, files) => {
// 	if (err) {
// 		throw err
// 	}
// 	console.log(files)
// })

// const data = fs.readdirSync('./Javascript')
// console.log(data)

// // 异步删除，只能删除空目录
// fs.rmdir('./src/views', err => {
// 	if (err) {
// 		throw err
// 	}
// 	console.log('删除成功')
// })

// // 异步递归删除文件夹，会删除目录及其子目录
// fs.rmdir('./src/views', { recursive: true }, err => {
// 	if (err) {
// 		throw err
// 	}
// 	console.log('递归删除成功')
// })

// // 同步递归删除文件夹
// fs.rmdirSync('./src/views', { recursive: true })

// const path = require('path')

// // // 使用 path.join 连接路径片段
// const joinedPath = path.join('./Documents', 'file.txt')
// console.log(joinedPath) // Documents/file.txt

// console.log(path.join(__dirname, 'Documents', 'file.txt')) // /Users/yunmu/Desktop/front-end-notes/Documents/file.txt

// // 异步获取状态
// fs.stat('./Typescript', (err, stats) => {
// 	if (err) {
// 		throw err
// 	}

// 	console.log(stats)
// })

// //同步获取状态
// const data = fs.statSync('./Typescript')
// console.log(data)

// fs.mkdir('./src', err => {
// 	if (err) {
// 		throw err
// 	}

// 	console.log('创建成功')
// })

// // 递归异步创建
// fs.mkdir('./src/views/home', { recursive: true }, err => {
// 	if (err) {
// 		throw err
// 	}

// 	console.log('创建成功')
// })

// // 递归同步创建
// fs.mkdirSync('./src/views/home', { recursive: true })

const data = fs.readFileSync(__dirname + '/index.html')
console.log(data)
